﻿using DAL.Interfejsi;
using MySql.Data.MySqlClient;
using sistem;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DAL
{
    partial class DAL
    {
        public class RazredPredmetVezaDAO: IDaoCrud<RazredPredmetVeza>
        {
            #region IDaoCrud<RazredPredmetVeza> Members
            protected MySqlCommand c;
            public long create(RazredPredmetVeza entity)
            {
                try
                {
                    c = new MySqlCommand("insert into razred_predmet_veza(razred_id, predmet_id) values (@RazredID, @PredmetID);", con);
                    c.Parameters.AddWithValue("@ProfesorId", entity.RazredID);
                    c.Parameters.AddWithValue("@PredmetID", entity.PredmetID);
                    c.ExecuteNonQuery();
                    return c.LastInsertedId;
                }
                catch (Exception e)
                {
                    throw e;
                }
            }

            public List<RazredPredmetVeza> getAll()
            {
                try
                {
                    c = new MySqlCommand("select * from razred_predmet_veza;", con);
                    MySqlDataReader r = c.ExecuteReader();
                    List<RazredPredmetVeza> veze = new List<RazredPredmetVeza>();
                    while (r.Read())
                    {
                        RazredPredmetVeza veza = new RazredPredmetVeza();
                        veza.ID = r.GetInt32("id");
                        veza.PredmetID = r.GetInt32("predmet_id");
                        veza.RazredID = r.GetInt32("razred_id");
                        veze.Add(veza);
                    }
                    r.Close();
                    c.Dispose();
                    return veze;
                }
                catch (Exception e)
                {
                    throw e;
                }
            }

            public RazredPredmetVeza read(RazredPredmetVeza entity)
            {
                try
                {
                    c = new MySqlCommand("select * from razred_predmet_veza where id = @ID;", con);
                    c.Parameters.AddWithValue("@ID", entity.ID);
                    MySqlDataReader r = c.ExecuteReader();
                    RazredPredmetVeza veza = new RazredPredmetVeza();
                    if (r.Read())
                    {
                        veza.PredmetID = r.GetInt32("predmet_id");
                        veza.RazredID = r.GetInt32("razred_id");
                    }
                    r.Close();
                    c.Dispose();
                    return veza;
                }
                catch (Exception e)
                {
                    throw e;
                }
            }

            public RazredPredmetVeza update(RazredPredmetVeza entity)
            {
                try
                {
                    c = new MySqlCommand("UPDATE razred_predmet_veza SET razred_id = @RazredID, predmet_id = @PredmetID where id = @ID;", con);
                    c.Parameters.AddWithValue("@ID", entity.ID);
                    c.Parameters.AddWithValue("@RazredID", entity.RazredID);
                    c.Parameters.AddWithValue("@PredmetID", entity.PredmetID);
                    c.ExecuteNonQuery();
                    return entity;
                }
                catch (Exception e)
                {
                    throw e;
                }
            }

            public void delete(RazredPredmetVeza entity)
            {
                try
                {
                    c = new MySqlCommand("delete from razred_predmet_veza where id = @ID;", con);
                    c.Parameters.AddWithValue("@ID", entity.ID);
                    c.ExecuteNonQuery();
                }
                catch (Exception e)
                {
                    throw e;
                }
            }
            public RazredPredmetVeza getById(int id)
            {
                try
                {
                    c = new MySqlCommand("select * from razred_predmet_veza where id = @ID;", con);
                    c.Parameters.AddWithValue("@ID", id);
                    MySqlDataReader r = c.ExecuteReader();
                    RazredPredmetVeza rpv = new RazredPredmetVeza();
                    if (r.Read())
                    {
                        rpv.ID = id;
                        rpv.PredmetID = r.GetInt32("predmet_id");
                        rpv.RazredID = r.GetInt32("razred_id");
                    }
                    return rpv;
                }
                catch(Exception ex)
                {
                    throw ex;
                }
            }
            public List<RazredPredmetVeza> getByRazredId(int id)
            {
                try
                {
                    c = new MySqlCommand("select * from razred_predmet_veza where razred_id = @ID;", con);
                    c.Parameters.AddWithValue("@ID", id);
                    MySqlDataReader r = c.ExecuteReader();
                    List<RazredPredmetVeza> veze = new List<RazredPredmetVeza>();
                    while (r.Read())
                    {
                        RazredPredmetVeza veza = new RazredPredmetVeza();
                        veza.ID = id;
                        veza.RazredID = r.GetInt32("razred_id");
                        veza.PredmetID = r.GetInt32("predmet_id");
                        veze.Add(veza);
                    }
                    r.Close();
                    c.Dispose();
                    return veze;
                }
                catch (Exception e)
                {
                    throw e;
                }
            }
            public List<RazredPredmetVeza> getByProfesorId(int id)
            {
                try
                {
                    c = new MySqlCommand("select * from razred_predmet_veza where predmet_id = @ID;", con);
                    c.Parameters.AddWithValue("@ID", id);
                    MySqlDataReader r = c.ExecuteReader();
                    List<RazredPredmetVeza> veze = new List<RazredPredmetVeza>();
                    while (r.Read())
                    {
                        RazredPredmetVeza veza = new RazredPredmetVeza();
                        veza.ID = id;
                        veza.RazredID = r.GetInt32("razred_id");
                        veza.PredmetID = r.GetInt32("predmet_id");
                        veze.Add(veza);
                    }
                    r.Close();
                    c.Dispose();
                    return veze;
                }
                catch (Exception e)
                {
                    throw e;
                }
            }
            public List<RazredPredmetVeza> getByExample(string name, string value)
            {
                try
                {
                    c = new MySqlCommand("select * from veza where @Kolona = @Vrijednost;", con);
                    c.Parameters.AddWithValue("@Kolona", name);
                    c.Parameters.AddWithValue("@Vrijednost", value);
                    MySqlDataReader r = c.ExecuteReader();
                    List<RazredPredmetVeza> veze = new List<RazredPredmetVeza>();
                    while (r.Read())
                    {
                        RazredPredmetVeza veza = new RazredPredmetVeza();
                        veza.ID = r.GetInt32("id");
                        veza.RazredID = r.GetInt32("razred_id");
                        veza.PredmetID = r.GetInt32("predmet_id");
                        veze.Add(veza);
                    }
                    r.Close();
                    c.Dispose();
                    return veze;
                }
                catch (Exception e)
                {
                    throw e;
                }
            }
            #endregion
        }
    }
}
